package cn.itcast.usermanage.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import com.alibaba.druid.util.StringUtils;

import cn.itcast.usermanage.pojo.User;
import cn.itcast.usermanage.service.UserService;

@Controller
@RequestMapping(value="rest/user")
public class NewUserController {
	
	@Autowired
	private UserService userService;
 	
	/**
	 * 说明：根据id查询用户信息
	 * @param id
	 * @return
	 * @author 呆呆的
	 * @time：2017年12月14日 上午11:52:27
	 * 
	 * body : 表示有返回值的
	 * build : 表示没有返回值的
	 */
	@RequestMapping(value="{id}",method=RequestMethod.GET)
	public ResponseEntity<User>  queryUserById(@PathVariable("id")Long id){
		if(id.longValue() < 1){
			//参数有误 400
			return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null);
		}
		
		User user = userService.queryById(id);
		if(null == user){
			//资源不存在  404
			return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
		}
//		return ResponseEntity.status(HttpStatus.OK).body(user);
		//200
		return ResponseEntity.ok(user);
	}
	
	/**
	 * 说明：增加用户
	 * @param user
	 * @return
	 * @author 呆呆的
	 * @time：2017年12月14日 下午8:37:18
	 */
	@RequestMapping(method=RequestMethod.POST)
	public ResponseEntity<Void> saveUser(User user){
		if(StringUtils.isEmpty(user.getUserName())){
			// 参数有误   400
			return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
		}
		userService.saveUser(user);
		//201
		return ResponseEntity.status(HttpStatus.CREATED).build();
	}
	
	/**
	 * 说明：修改用户
	 * @param user
	 * @return
	 * @author 呆呆的
	 * @time：2017年12月14日 下午8:37:37
	 */
	@RequestMapping(method=RequestMethod.PUT)
	public ResponseEntity<Void> updateUser(User user){
		if(user.getId() == null  || user.getId().longValue() < 1){
			//参数有误   400
			return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
		}
		userService.updateUser(user);
		//204
		return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
	}
	
	/**
	 * 说明：
	 * @param id
	 * @return
	 * @author 呆呆的
	 * @time：2017年12月14日 下午8:41:47
	 */
	@RequestMapping(method=RequestMethod.DELETE)
	//defaultValue : 默认值
	public ResponseEntity<Void> deleteUserById(@RequestParam(value="id",defaultValue="0")Long id){
		if(id.intValue() == 0){
			return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
		}
		Integer count = userService.deleteById(id);
		if(count.intValue() == 1){
			return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
		}
		return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
	}
}
